草庐IT

c++ - 特化 std::make_shared

全部标签

c - 在没有 C 运行时的情况下与 VS2010 链接时未解析的符号

我正在处理一个有大小限制的项目,所以我不想链接到VisualStudio的C运行时。我使用静态运行时(/MT)和/NODEFAULTLIB:LIBCMT标志来执行此操作。我已经通过检查VS附带的运行时源解决了大部分问题。但是,编译器仍然会生成一些未解析的外部符号:_chkstk:生成用于检查大于4k的函数的堆栈。我可以关闭它或提供虚拟功能吗?__libm_sse2_pow和其他SSE调用:我可以通过关闭SSE代码生成来避免这些,但如果可能的话,我希望拥有它们。这些符号似乎来自Intel库(libmmd.lib?)。为什么这部分仍然是C运行时?_ftol2_sse:将浮点型转换为长整型。

CreateFileMapping 以 "Not enough disk space"错误结束

我在理解如何使用API函数CreateFileMapping(...)时遇到问题。我一直在尝试映射一个小文件,然后反转它的内容。它只有大约1Kb,但我一直收到“内存不足”错误。我已通过调用CreateFile打开了文件,并使用GetFileSize获取了它的大小。然后我调用:CreateFileMapping(fileHandle,NULL,PAGE_READWRITE|SEC_RESERVE,fileSize+1,fileSize+1,NULL);我怀疑问题是将fileSize+1作为dwFileOffsetHigh和dwFileOffsetLow传递,但我很难理解应该做什么我改为传

c++ - 在 C 中,如何在执行另一个功能时不断获取用户输入?

这个问题真的困扰着我如何用C方式做到这一点:在无限循环中显示一系列数字(1、2、3、4、5...等)。如果有人按下特定键(比如退格键),程序应该退出。我的尝试是制作一个循环,然后每次都获取用户输入。intmain(){charuserInput;inti=0;while(true){Sleep(1000);printf("%d",++i);userInput=getch();fflush(stdin);if(userInput=='\b'){break;}}getch();return0;}但这不是问题要找的答案。它确实想在检查用户输入的同时继续打印数字。任何人都可以帮助新手吗?谢谢!

c - MPI基础类(class)

您好,我想学习在C中使用MPI。我在Windows7上使用Codeblocks我运行了这个程序:#include#includevoidmain(intargc,char*argv[]){interr;err=MPI_Init(&argc,&argv);printf("Helloworld!\n");err=MPI_Finalize();}但出于某种原因,我在“mpi.h”处遇到错误。有没有办法添加库? 最佳答案 首先,安装MPI的实现。过去我使用过MPICH,但还有其他可用的实现。我知道另一个是LAM/MPI。查看维基百科页面以获

c# - 在 C# 中编码一个 char**

我正在与采用char**(即指向字符串的指针)的代码进行交互:intDoSomething(Whatever*handle,char**error);基本上,它需要一个状态句柄,如果出现问题,它会返回错误代码和可选的错误消息(内存是在外部分配的,并通过第二个函数释放。那部分我已经弄明白了:)).但是,我不确定如何在C#中处理in。我目前拥有的:[DllImport("mydll.dll",CallingConvention=CallingConvention.Cdecl)]privatestaticunsafeexternintDoSomething(IntPtrhandle,byte

c# - C# 中的 C 位域

我需要将C结构转换为使用位字段的C#。typedefstructfoo{unsignedintbar1:1;unsignedintbar2:2;unsignedintbar3:3;unsignedintbar4:4;unsignedintbar5:5;unsignedintbar6:6;unsignedintbar7:7;...unsignedintbar32:32;}foo;有人知道怎么做吗? 最佳答案 如thisanswer中所述和thisMSDNarticle,您可能正在寻找以下内容而不是BitField[Flags]enum

c# - 来自 C 背景,在 C# 中实现 const 引用数据表/结构的好方法是什么?

我将给出一个我熟悉的使用C实现的简单示例。我认为重点在于如何使用数据,而不是我在示例中使用它所做的事情:)typedefstruct{constchar*description;uint32_tcolour_id;uint32_tquantity;}my_data_t;constmy_data_tref_data[]={{"BrownBear",0x88,10},{"BlueHorse",0x666,42},{"PurpleCat",123456,50},};voidshow_animals(void){my_data_t*ptr;ptr=&ref_data[2];console_wr

c# - 如何通过引用修改该字符串的非托管 C 库来发送字符串?

我是与非托管库交互的新手。我有一个非托管C函数,它通过函数内的引用修改字符串。我在从C#传递字符串并通过C函数修改它时遇到问题。这是C函数:__declspec(dllexport)void__stdcallTest(char*name){*name="Bar";}这是C#DLL导入代码:[DllImport(@"C:/blah/mylibrary.dll")]publicexternstaticstringTest(stringname);这是我用来调用函数的代码:strings="foo";Test(s);//Iwantstobe"Bar"aftertheaboveline我曾尝试

c# - 如何制作从 C# "Thread-safe"调用的 C (P/invoke) 代码

我有一些使用单个全局变量的简单C代码。显然这不是线程安全的,所以当我在C#中使用P/invoke从多个线程调用它时,事情就搞砸了。如何为每个线程单独导入此函数,或使其成为线程安全的?我尝试声明变量__declspec(thread),但这导致程序崩溃。我还尝试制作一个C++/CLI类,但它不允许成员函数是__declspec(naked),我需要(我正在使用内联汇编)。我在编写多线程C++代码方面经验不足,因此可能缺少某些内容。下面是一些示例代码:C#[DllImport("MyDll.dll",CallingConvention=CallingConvention.Cdecl)]pu

c# - 随机整数中最可能的位

我做过这样的实验——用C和C#制作了1000万个随机数。然后统计随机整数中15位中的每一位被设置了多少次。(我选择15位是因为C只支持最大0x7fff的随机整数)。我得到的是:我有两个问题:为什么有3个最可能的位?在C情况下,位8,10,12是最有可能的。和C#位6,8,11最有可能。与C#最可能位相比,C#最可能位也似乎大部分移动了2个位置。为什么是这样?因为C#使用其他RAND_MAX常量还是什么?我的C测试代码:voidaccumulateResults(intrandom,intbitSet[15]){inti;intisBitSet;for(i=0;iC#的测试代码:stat